QuickOPC User's Guide and Reference
Classic OPC on 64-bit Systems
Advanced Topics > 64-bit Platforms > Classic OPC on 64-bit Systems
This functionality is not available under (or the text does not apply to) .NET 6+ development platform.

Classic OPC is based on Microsoft COM/DCOM, which has originally been designed for 32-bit world, and later ported to and enhanced for 64-bit systems. There are several issues with COM/DCOM on 64-bit systems and some additional issues specific to OPC.

The most notable issue is the fact that browsing for OPC servers does not always fully work between 32-bit and 64-bit worlds. This is because the old OPCEnum component (provided earlier by OPC Foundation and still being installed with some servers) runs in 32-bit process and only enumerates 32-bit OPC servers. Consequently, native 64-bit OPC servers may be “invisible” for browsing from 32-bit OPC clients, although it may still be possible to connect to them, provided that the OPC client has OPC server’s ProgID or CLSID.

Depending on how the OPC server registers itself, the opposite behavior is also possible: The server might be visible in the list of servers, but no connection to it possible from 64-bit processes.

Local out-of-process server (.EXE-s) are, in generable, usable across bitness boundaries (32-bit servers from 64-bit clients and vice versa), but proper setup and registration is needed (see above), which is not always the case. Local in-process servers (.DLL-s), which are relatively rare, cannot be directly used across bitness boundaries. A possible workaround is to use COM+ configuration and set them to run in a surrogate process.

Some OPC servers have a licensing approach that differentiates between local and remote usage of the OPC server, and require you to obtain a different (typically more expensive) license for the remote usage. Quite often these are 32-bit OPC servers, and their internal logic that detects the type of usage is flawed in such a way that a local usage of this 32-bit OPC server from an OPC client running in a 64-bit process is considered a "remote" usage. This results in a licensing error from the OPC server when you try to connect to it from an OPC client built with QuickOPC and run on a 64-bit computer. It may seem that this a QuickOPC fault, because other OPC clients work well - but that is because they are typically 32-bit clients only. The remedy is to build your OPC client for the "x86" target (instead of "AnyCPU" or "x64"), or to use the ClrFlags tool from Microsoft to modify your executable accordingly - so that it runs as a 32-bit process.
See Also

Knowledge Base